/* Task 板块的store */

import {observable, runInAction, action, makeObservable, makeAutoObservable} from "mobx";
import {getTaskList} from "../api/task";

/* mobx6的处理 */
export default class TaskStore {
    constructor(root) {
        // root: 最外层Store类的实例(包含各板块Store实例)
        // 我们以后可以在 TASK板块中，基于 this.root 获取 store实例，访问其他板块的实例
        this.root = root
        // 基于 makeObservable 给状态和方法设置装饰效果
        // makeObservable(this, {
        //     taskList: observable,
        //     queryAllTaskActionAction: action.bound,
        //     removeTaskAction: action.bound,
        //     updateTaskAction: action.bound,
        // })
        // 对 makeObservable 的加强，可以自己给状态和方法设置装饰
        makeAutoObservable(this)
    }

    taskList = null

    // 异步获取全局数据

    async queryAllTaskAction() {
        console.log(this)
        let list = [];
        try {
            let result = await getTaskList(0);
            if (+result.code === 0) list = result.list;
        } catch (_) { }
        runInAction(() => {
            console.log(this,2222)
            this.taskList = list;
        });
    }

    // 同步删除某一数据
    removeTaskAction(id) {
        console.log(this)
        let {taskList} = this
        if (!Array.isArray(taskList)) return
        this.taskList = taskList.filter(item => {
            // payload:接受传递进来的，要删除那一项的 id
            return +item.id !== +id
        })
    }

    // 同步修改某一数据
    updateTaskAction(id) {
        let {taskList} = this
        if (!Array.isArray(taskList)) return
        this.taskList = taskList.map(item => {
            if (+item.id == +id) {
                item.state = 2
                item.complelte = new Date().toLocaleDateString('zh-Cn')
            }
            return item
        })
    }
}

let task = new TaskStore()

/* mobx5的处理 */
// export default class PersonalStore {
//     constructor(root) {
//         // root: 最外层Store类的实例(包含各板块Store实例)
//         // 我们以后可以在 TASK板块中，基于 this.root 获取 store实例，访问其他板块的实例
//         this.root = root
//     }
//
//     @observable taskList = null
//
//     // 异步获取全局数据
//     @action.bound
//     async queryAllTaskAction() {
//         let list = []
//         try {
//             let result = await getTaskList(0)
//             if (+result.code === 0) list = result.list
//         } catch (_) {
//         }
//         runInAction(() => {
//             console.log(this,111)
//             this.taskList = list
//         })
//     }
//
//     // 同步删除某一数据
//     @action.bound removeTaskAction(id) {
//         let {taskList} = this
//         if (!Array.isArray(taskList)) return
//         this.taskList = taskList.filter(item => {
//             // payload:接受传递进来的，要删除那一项的 id
//             return +item.id !== +id
//         })
//     }
//
//     // 同步修改某一数据
//     @action.bound updateTaskAction(id) {
//         let {taskList} = this
//         if (!Array.isArray(taskList)) return
//         this.taskList = taskList.map(item => {
//             if (+item.id == +id) {
//                 item.state = 2
//                 item.complelte = new Date().toLocaleDateString('zh-Cn')
//             }
//             return item
//         })
//     }
// }

